package com.springbootnetty.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.springbootnetty.jt808.BaseHead;
import com.springbootnetty.utils.Jt808Util;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;


@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("GPS对象")
public class TbAuth extends BaseHead {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("id")
    @TableId(type = IdType.AUTO)
    private Long id;



    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;



    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;


    @ApiModelProperty(value = "报文文本")
    private String byteNext;



    public TbAuth(byte[] data, BaseHead baseHead) {
        this.createTime = new Date();
        this.updateTime = new Date();
        this.byteNext = Jt808Util.byte6ToString(data);

        this.msgId=baseHead.msgId;
        this.msgPhone=baseHead.msgPhone;
        this.msgProperty=baseHead.msgProperty;
    }


    /**
     * 授权响应
     *
     * 7E                   --标识符
     * 80 01                --消息头（消息ID）
     * 00 05                --消息头（消息体属性）
     * 01 47 85 23 69 00    --消息头（终端手机号）
     * 00 01                --消息头（消息流水号）
     * 00 45                        --应答流水号（对应的终端注册消息的流水号）
     * 01 02                        --应答ID（对应的终端消息的ID）
     * 00                   --结果（对照协议去看）
     * 4A                           --校验码
     * 7E                   --标识符
     * */
    public byte[] resp(byte[] data) {
        byte[] arr = new byte[]{
                0x7E,
                (byte) 0x80, 0x01,
                0x00, 0x05,
                data[5], data[6], data[7], data[8], data[9], data[10],//终端手机号
                0x00, 0x00,
                data[11], data[12],//应答流水号
                data[1], data[2],//应答id
                0x00,
                0x00,//效验码
                0x7E,
        };
        //获取校验码，重新赋值
        int xorCode = Jt808Util.getXorCode(arr);
        arr[arr.length-2]=(byte)xorCode;
        return arr;
    }

}
